﻿/*
Copyright © 2011 Nokia Corporation. All rights reserved.
Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. 
Java and all Java-based marks are trademarks or registered trademarks of 
Sun Microsystems, Inc. Other product and company names mentioned herein may be 
trademarks or trade names of their respective owners.

Subject to the conditions below, you may, without charge:

·  Use, copy, modify and/or merge copies of this software and 
   associated content and documentation files (the “Software”)

·  Publish, distribute, sub-licence and/or sell new software 
   derived from or incorporating the Software.

Some of the documentation, content and/or software maybe licensed under open source software or other licenses.  To the extent such documentation, content and/or software are included, licenses and/or other terms and conditions shall apply in addition and/or instead of this notice. The exact terms of the licenses, disclaimers, acknowledgements and notices are reproduced in the materials provided.

This file, unmodified, shall be included with all copies or substantial portions
of the Software that are distributed in source code form.

The Software cannot constitute the primary value of any new software derived 
from or incorporating the Software.

Any person dealing with the Software shall not misrepresent the source of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

// 
// This code was auto-generated by Microsoft.Silverlight.Phone.ServiceReference, version 3.7.0.0
// 
namespace Carpool.Bing.Route {
    using System.Runtime.Serialization;
    
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RequestBase", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.MajorRoutesRequest))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.RouteRequest))]
    public partial class RequestBase : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Phone.Controls.Maps.Credentials CredentialsField;
        
        private string CultureField;
        
        private Carpool.Bing.Route.ExecutionOptions ExecutionOptionsField;
        
        private Carpool.Bing.Route.UserProfile UserProfileField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Credentials Credentials {
            get {
                return this.CredentialsField;
            }
            set {
                if ((object.ReferenceEquals(this.CredentialsField, value) != true)) {
                    this.CredentialsField = value;
                    this.RaisePropertyChanged("Credentials");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Culture {
            get {
                return this.CultureField;
            }
            set {
                if ((object.ReferenceEquals(this.CultureField, value) != true)) {
                    this.CultureField = value;
                    this.RaisePropertyChanged("Culture");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ExecutionOptions ExecutionOptions {
            get {
                return this.ExecutionOptionsField;
            }
            set {
                if ((object.ReferenceEquals(this.ExecutionOptionsField, value) != true)) {
                    this.ExecutionOptionsField = value;
                    this.RaisePropertyChanged("ExecutionOptions");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.UserProfile UserProfile {
            get {
                return this.UserProfileField;
            }
            set {
                if ((object.ReferenceEquals(this.UserProfileField, value) != true)) {
                    this.UserProfileField = value;
                    this.RaisePropertyChanged("UserProfile");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ExecutionOptions", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class ExecutionOptions : object, System.ComponentModel.INotifyPropertyChanged {
        
        private bool SuppressFaultsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool SuppressFaults {
            get {
                return this.SuppressFaultsField;
            }
            set {
                if ((this.SuppressFaultsField.Equals(value) != true)) {
                    this.SuppressFaultsField = value;
                    this.RaisePropertyChanged("SuppressFaults");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="UserProfile", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Microsoft.Phone.Controls.Maps.Platform.Rectangle))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.Circle))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.Polygon))]
    public partial class UserProfile : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.Heading CurrentHeadingField;
        
        private Carpool.Bing.Route.UserLocation CurrentLocationField;
        
        private Carpool.Bing.Route.DeviceType DeviceTypeField;
        
        private Carpool.Bing.Route.DistanceUnit DistanceUnitField;
        
        private string IPAddressField;
        
        private Microsoft.Phone.Controls.Maps.Platform.ShapeBase MapViewField;
        
        private Carpool.Bing.Route.SizeOfint ScreenSizeField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.Heading CurrentHeading {
            get {
                return this.CurrentHeadingField;
            }
            set {
                if ((object.ReferenceEquals(this.CurrentHeadingField, value) != true)) {
                    this.CurrentHeadingField = value;
                    this.RaisePropertyChanged("CurrentHeading");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.UserLocation CurrentLocation {
            get {
                return this.CurrentLocationField;
            }
            set {
                if ((object.ReferenceEquals(this.CurrentLocationField, value) != true)) {
                    this.CurrentLocationField = value;
                    this.RaisePropertyChanged("CurrentLocation");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.DeviceType DeviceType {
            get {
                return this.DeviceTypeField;
            }
            set {
                if ((this.DeviceTypeField.Equals(value) != true)) {
                    this.DeviceTypeField = value;
                    this.RaisePropertyChanged("DeviceType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.DistanceUnit DistanceUnit {
            get {
                return this.DistanceUnitField;
            }
            set {
                if ((this.DistanceUnitField.Equals(value) != true)) {
                    this.DistanceUnitField = value;
                    this.RaisePropertyChanged("DistanceUnit");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string IPAddress {
            get {
                return this.IPAddressField;
            }
            set {
                if ((object.ReferenceEquals(this.IPAddressField, value) != true)) {
                    this.IPAddressField = value;
                    this.RaisePropertyChanged("IPAddress");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.ShapeBase MapView {
            get {
                return this.MapViewField;
            }
            set {
                if ((object.ReferenceEquals(this.MapViewField, value) != true)) {
                    this.MapViewField = value;
                    this.RaisePropertyChanged("MapView");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.SizeOfint ScreenSize {
            get {
                return this.ScreenSizeField;
            }
            set {
                if ((object.ReferenceEquals(this.ScreenSizeField, value) != true)) {
                    this.ScreenSizeField = value;
                    this.RaisePropertyChanged("ScreenSize");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="MajorRoutesRequest", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class MajorRoutesRequest : Carpool.Bing.Route.RequestBase {
        
        private Carpool.Bing.Route.Waypoint DestinationField;
        
        private Carpool.Bing.Route.MajorRoutesOptions OptionsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.Waypoint Destination {
            get {
                return this.DestinationField;
            }
            set {
                if ((object.ReferenceEquals(this.DestinationField, value) != true)) {
                    this.DestinationField = value;
                    this.RaisePropertyChanged("Destination");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.MajorRoutesOptions Options {
            get {
                return this.OptionsField;
            }
            set {
                if ((object.ReferenceEquals(this.OptionsField, value) != true)) {
                    this.OptionsField = value;
                    this.RaisePropertyChanged("Options");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteRequest", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class RouteRequest : Carpool.Bing.Route.RequestBase {
        
        private Carpool.Bing.Route.RouteOptions OptionsField;
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.Waypoint> WaypointsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteOptions Options {
            get {
                return this.OptionsField;
            }
            set {
                if ((object.ReferenceEquals(this.OptionsField, value) != true)) {
                    this.OptionsField = value;
                    this.RaisePropertyChanged("Options");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.Waypoint> Waypoints {
            get {
                return this.WaypointsField;
            }
            set {
                if ((object.ReferenceEquals(this.WaypointsField, value) != true)) {
                    this.WaypointsField = value;
                    this.RaisePropertyChanged("Waypoints");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteOptions", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.MajorRoutesOptions))]
    public partial class RouteOptions : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.TravelMode ModeField;
        
        private Carpool.Bing.Route.RouteOptimization OptimizationField;
        
        private Carpool.Bing.Route.RoutePathType RoutePathTypeField;
        
        private Carpool.Bing.Route.TrafficUsage TrafficUsageField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.TravelMode Mode {
            get {
                return this.ModeField;
            }
            set {
                if ((this.ModeField.Equals(value) != true)) {
                    this.ModeField = value;
                    this.RaisePropertyChanged("Mode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteOptimization Optimization {
            get {
                return this.OptimizationField;
            }
            set {
                if ((this.OptimizationField.Equals(value) != true)) {
                    this.OptimizationField = value;
                    this.RaisePropertyChanged("Optimization");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RoutePathType RoutePathType {
            get {
                return this.RoutePathTypeField;
            }
            set {
                if ((this.RoutePathTypeField.Equals(value) != true)) {
                    this.RoutePathTypeField = value;
                    this.RaisePropertyChanged("RoutePathType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.TrafficUsage TrafficUsage {
            get {
                return this.TrafficUsageField;
            }
            set {
                if ((this.TrafficUsageField.Equals(value) != true)) {
                    this.TrafficUsageField = value;
                    this.RaisePropertyChanged("TrafficUsage");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Waypoint", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.UserLocation))]
    public partial class Waypoint : object, System.ComponentModel.INotifyPropertyChanged {
        
        private string DescriptionField;
        
        private Microsoft.Phone.Controls.Maps.Platform.Location LocationField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Description {
            get {
                return this.DescriptionField;
            }
            set {
                if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
                    this.DescriptionField = value;
                    this.RaisePropertyChanged("Description");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Location Location {
            get {
                return this.LocationField;
            }
            set {
                if ((object.ReferenceEquals(this.LocationField, value) != true)) {
                    this.LocationField = value;
                    this.RaisePropertyChanged("Location");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Heading", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class Heading : object, System.ComponentModel.INotifyPropertyChanged {
        
        private double OrientationField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public double Orientation {
            get {
                return this.OrientationField;
            }
            set {
                if ((this.OrientationField.Equals(value) != true)) {
                    this.OrientationField = value;
                    this.RaisePropertyChanged("Orientation");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="UserLocation", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class UserLocation : Microsoft.Phone.Controls.Maps.Platform.Location, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.Confidence ConfidenceField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.Confidence Confidence {
            get {
                return this.ConfidenceField;
            }
            set {
                if ((this.ConfidenceField.Equals(value) != true)) {
                    this.ConfidenceField = value;
                    this.RaisePropertyChanged("Confidence");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SizeOfint", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class SizeOfint : object, System.ComponentModel.INotifyPropertyChanged {
        
        private int HeightField;
        
        private int WidthField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int Height {
            get {
                return this.HeightField;
            }
            set {
                if ((this.HeightField.Equals(value) != true)) {
                    this.HeightField = value;
                    this.RaisePropertyChanged("Height");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int Width {
            get {
                return this.WidthField;
            }
            set {
                if ((this.WidthField.Equals(value) != true)) {
                    this.WidthField = value;
                    this.RaisePropertyChanged("Width");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Circle", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.UserLocation))]
    public partial class Circle : Microsoft.Phone.Controls.Maps.Platform.ShapeBase, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Phone.Controls.Maps.Platform.Location CenterField;
        
        private Carpool.Bing.Route.DistanceUnit DistanceUnitField;
        
        private double RadiusField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Location Center {
            get {
                return this.CenterField;
            }
            set {
                if ((object.ReferenceEquals(this.CenterField, value) != true)) {
                    this.CenterField = value;
                    this.RaisePropertyChanged("Center");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.DistanceUnit DistanceUnit {
            get {
                return this.DistanceUnitField;
            }
            set {
                if ((this.DistanceUnitField.Equals(value) != true)) {
                    this.DistanceUnitField = value;
                    this.RaisePropertyChanged("DistanceUnit");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public double Radius {
            get {
                return this.RadiusField;
            }
            set {
                if ((this.RadiusField.Equals(value) != true)) {
                    this.RadiusField = value;
                    this.RaisePropertyChanged("Radius");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Polygon", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class Polygon : Microsoft.Phone.Controls.Maps.Platform.ShapeBase, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Collections.ObjectModel.ObservableCollection<Microsoft.Phone.Controls.Maps.Platform.Location> VerticesField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Microsoft.Phone.Controls.Maps.Platform.Location> Vertices {
            get {
                return this.VerticesField;
            }
            set {
                if ((object.ReferenceEquals(this.VerticesField, value) != true)) {
                    this.VerticesField = value;
                    this.RaisePropertyChanged("Vertices");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DeviceType", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum DeviceType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Desktop = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Mobile = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DistanceUnit", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum DistanceUnit : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Kilometer = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Mile = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Confidence", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum Confidence : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        High = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Medium = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Low = 2,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeLocation", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class GeocodeLocation : Microsoft.Phone.Controls.Maps.Platform.Location, System.ComponentModel.INotifyPropertyChanged {
        
        private string CalculationMethodField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CalculationMethod {
            get {
                return this.CalculationMethodField;
            }
            set {
                if ((object.ReferenceEquals(this.CalculationMethodField, value) != true)) {
                    this.CalculationMethodField = value;
                    this.RaisePropertyChanged("CalculationMethod");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="MajorRoutesOptions", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class MajorRoutesOptions : Carpool.Bing.Route.RouteOptions {
        
        private bool ReturnRoutesField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool ReturnRoutes {
            get {
                return this.ReturnRoutesField;
            }
            set {
                if ((this.ReturnRoutesField.Equals(value) != true)) {
                    this.ReturnRoutesField = value;
                    this.RaisePropertyChanged("ReturnRoutes");
                }
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="TravelMode", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum TravelMode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Driving = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Walking = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteOptimization", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum RouteOptimization : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        MinimizeTime = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        MinimizeDistance = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RoutePathType", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum RoutePathType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Points = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="TrafficUsage", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum TrafficUsage : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TrafficBasedTime = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TrafficBasedRouteAndTime = 2,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseBase", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.MajorRoutesResponse))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.RouteResponse))]
    public partial class ResponseBase : object, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Uri BrandLogoUriField;
        
        private Carpool.Bing.Route.ResponseSummary ResponseSummaryField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Uri BrandLogoUri {
            get {
                return this.BrandLogoUriField;
            }
            set {
                if ((object.ReferenceEquals(this.BrandLogoUriField, value) != true)) {
                    this.BrandLogoUriField = value;
                    this.RaisePropertyChanged("BrandLogoUri");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ResponseSummary ResponseSummary {
            get {
                return this.ResponseSummaryField;
            }
            set {
                if ((object.ReferenceEquals(this.ResponseSummaryField, value) != true)) {
                    this.ResponseSummaryField = value;
                    this.RaisePropertyChanged("ResponseSummary");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class ResponseSummary : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.AuthenticationResultCode AuthenticationResultCodeField;
        
        private string CopyrightField;
        
        private string FaultReasonField;
        
        private Carpool.Bing.Route.ResponseStatusCode StatusCodeField;
        
        private string TraceIdField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.AuthenticationResultCode AuthenticationResultCode {
            get {
                return this.AuthenticationResultCodeField;
            }
            set {
                if ((this.AuthenticationResultCodeField.Equals(value) != true)) {
                    this.AuthenticationResultCodeField = value;
                    this.RaisePropertyChanged("AuthenticationResultCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Copyright {
            get {
                return this.CopyrightField;
            }
            set {
                if ((object.ReferenceEquals(this.CopyrightField, value) != true)) {
                    this.CopyrightField = value;
                    this.RaisePropertyChanged("Copyright");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string FaultReason {
            get {
                return this.FaultReasonField;
            }
            set {
                if ((object.ReferenceEquals(this.FaultReasonField, value) != true)) {
                    this.FaultReasonField = value;
                    this.RaisePropertyChanged("FaultReason");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ResponseStatusCode StatusCode {
            get {
                return this.StatusCodeField;
            }
            set {
                if ((this.StatusCodeField.Equals(value) != true)) {
                    this.StatusCodeField = value;
                    this.RaisePropertyChanged("StatusCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string TraceId {
            get {
                return this.TraceIdField;
            }
            set {
                if ((object.ReferenceEquals(this.TraceIdField, value) != true)) {
                    this.TraceIdField = value;
                    this.RaisePropertyChanged("TraceId");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="MajorRoutesResponse", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class MajorRoutesResponse : Carpool.Bing.Route.ResponseBase {
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.RouteResult> RoutesField;
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.Waypoint> StartingPointsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.RouteResult> Routes {
            get {
                return this.RoutesField;
            }
            set {
                if ((object.ReferenceEquals(this.RoutesField, value) != true)) {
                    this.RoutesField = value;
                    this.RaisePropertyChanged("Routes");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.Waypoint> StartingPoints {
            get {
                return this.StartingPointsField;
            }
            set {
                if ((object.ReferenceEquals(this.StartingPointsField, value) != true)) {
                    this.StartingPointsField = value;
                    this.RaisePropertyChanged("StartingPoints");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteResponse", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class RouteResponse : Carpool.Bing.Route.ResponseBase {
        
        private Carpool.Bing.Route.RouteResult ResultField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteResult Result {
            get {
                return this.ResultField;
            }
            set {
                if ((object.ReferenceEquals(this.ResultField, value) != true)) {
                    this.ResultField = value;
                    this.RaisePropertyChanged("Result");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteResult", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class RouteResult : object, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.RouteLeg> LegsField;
        
        private Carpool.Bing.Route.RoutePath RoutePathField;
        
        private Carpool.Bing.Route.RouteSummary SummaryField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.RouteLeg> Legs {
            get {
                return this.LegsField;
            }
            set {
                if ((object.ReferenceEquals(this.LegsField, value) != true)) {
                    this.LegsField = value;
                    this.RaisePropertyChanged("Legs");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RoutePath RoutePath {
            get {
                return this.RoutePathField;
            }
            set {
                if ((object.ReferenceEquals(this.RoutePathField, value) != true)) {
                    this.RoutePathField = value;
                    this.RaisePropertyChanged("RoutePath");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteSummary Summary {
            get {
                return this.SummaryField;
            }
            set {
                if ((object.ReferenceEquals(this.SummaryField, value) != true)) {
                    this.SummaryField = value;
                    this.RaisePropertyChanged("Summary");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="AuthenticationResultCode", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum AuthenticationResultCode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NoCredentials = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ValidCredentials = 2,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        InvalidCredentials = 3,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        CredentialsExpired = 4,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NotAuthorized = 7,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseStatusCode", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum ResponseStatusCode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Success = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BadRequest = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ServerError = 2,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RoutePath", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class RoutePath : object, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Collections.ObjectModel.ObservableCollection<Microsoft.Phone.Controls.Maps.Platform.Location> PointsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Microsoft.Phone.Controls.Maps.Platform.Location> Points {
            get {
                return this.PointsField;
            }
            set {
                if ((object.ReferenceEquals(this.PointsField, value) != true)) {
                    this.PointsField = value;
                    this.RaisePropertyChanged("Points");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteSummary", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.UserLocation))]
    public partial class RouteSummary : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Phone.Controls.Maps.Platform.Rectangle BoundingRectangleField;
        
        private double DistanceField;
        
        private long TimeInSecondsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Rectangle BoundingRectangle {
            get {
                return this.BoundingRectangleField;
            }
            set {
                if ((object.ReferenceEquals(this.BoundingRectangleField, value) != true)) {
                    this.BoundingRectangleField = value;
                    this.RaisePropertyChanged("BoundingRectangle");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public double Distance {
            get {
                return this.DistanceField;
            }
            set {
                if ((this.DistanceField.Equals(value) != true)) {
                    this.DistanceField = value;
                    this.RaisePropertyChanged("Distance");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public long TimeInSeconds {
            get {
                return this.TimeInSecondsField;
            }
            set {
                if ((this.TimeInSecondsField.Equals(value) != true)) {
                    this.TimeInSecondsField = value;
                    this.RaisePropertyChanged("TimeInSeconds");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RouteLeg", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.UserLocation))]
    public partial class RouteLeg : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Phone.Controls.Maps.Platform.Location ActualEndField;
        
        private Microsoft.Phone.Controls.Maps.Platform.Location ActualStartField;
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItem> ItineraryField;
        
        private Carpool.Bing.Route.RouteSummary SummaryField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Location ActualEnd {
            get {
                return this.ActualEndField;
            }
            set {
                if ((object.ReferenceEquals(this.ActualEndField, value) != true)) {
                    this.ActualEndField = value;
                    this.RaisePropertyChanged("ActualEnd");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Location ActualStart {
            get {
                return this.ActualStartField;
            }
            set {
                if ((object.ReferenceEquals(this.ActualStartField, value) != true)) {
                    this.ActualStartField = value;
                    this.RaisePropertyChanged("ActualStart");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItem> Itinerary {
            get {
                return this.ItineraryField;
            }
            set {
                if ((object.ReferenceEquals(this.ItineraryField, value) != true)) {
                    this.ItineraryField = value;
                    this.RaisePropertyChanged("Itinerary");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteSummary Summary {
            get {
                return this.SummaryField;
            }
            set {
                if ((object.ReferenceEquals(this.SummaryField, value) != true)) {
                    this.SummaryField = value;
                    this.RaisePropertyChanged("Summary");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryItem", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Carpool.Bing.Route.UserLocation))]
    public partial class ItineraryItem : object, System.ComponentModel.INotifyPropertyChanged {
        
        private string CompassDirectionField;
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItemHint> HintsField;
        
        private Microsoft.Phone.Controls.Maps.Platform.Location LocationField;
        
        private Carpool.Bing.Route.ManeuverType ManeuverTypeField;
        
        private Carpool.Bing.Route.RouteSummary SummaryField;
        
        private string TextField;
        
        private System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItemWarning> WarningsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CompassDirection {
            get {
                return this.CompassDirectionField;
            }
            set {
                if ((object.ReferenceEquals(this.CompassDirectionField, value) != true)) {
                    this.CompassDirectionField = value;
                    this.RaisePropertyChanged("CompassDirection");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItemHint> Hints {
            get {
                return this.HintsField;
            }
            set {
                if ((object.ReferenceEquals(this.HintsField, value) != true)) {
                    this.HintsField = value;
                    this.RaisePropertyChanged("Hints");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Phone.Controls.Maps.Platform.Location Location {
            get {
                return this.LocationField;
            }
            set {
                if ((object.ReferenceEquals(this.LocationField, value) != true)) {
                    this.LocationField = value;
                    this.RaisePropertyChanged("Location");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ManeuverType ManeuverType {
            get {
                return this.ManeuverTypeField;
            }
            set {
                if ((this.ManeuverTypeField.Equals(value) != true)) {
                    this.ManeuverTypeField = value;
                    this.RaisePropertyChanged("ManeuverType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.RouteSummary Summary {
            get {
                return this.SummaryField;
            }
            set {
                if ((object.ReferenceEquals(this.SummaryField, value) != true)) {
                    this.SummaryField = value;
                    this.RaisePropertyChanged("Summary");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Text {
            get {
                return this.TextField;
            }
            set {
                if ((object.ReferenceEquals(this.TextField, value) != true)) {
                    this.TextField = value;
                    this.RaisePropertyChanged("Text");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Carpool.Bing.Route.ItineraryItemWarning> Warnings {
            get {
                return this.WarningsField;
            }
            set {
                if ((object.ReferenceEquals(this.WarningsField, value) != true)) {
                    this.WarningsField = value;
                    this.RaisePropertyChanged("Warnings");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryItemHint", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class ItineraryItemHint : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.ItineraryItemHintType HintTypeField;
        
        private string TextField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ItineraryItemHintType HintType {
            get {
                return this.HintTypeField;
            }
            set {
                if ((this.HintTypeField.Equals(value) != true)) {
                    this.HintTypeField = value;
                    this.RaisePropertyChanged("HintType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Text {
            get {
                return this.TextField;
            }
            set {
                if ((object.ReferenceEquals(this.TextField, value) != true)) {
                    this.TextField = value;
                    this.RaisePropertyChanged("Text");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ManeuverType", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum ManeuverType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Unknown = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        DepartStart = 2,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        DepartIntermediateStop = 3,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        DepartIntermediateStopReturning = 4,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ArriveFinish = 5,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ArriveIntermediateStop = 6,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnLeft = 7,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnRight = 8,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnBack = 9,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        UTurn = 10,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnToStayLeft = 11,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnToStayRight = 12,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearLeft = 13,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearRight = 14,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepToStayLeft = 15,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepToStayRight = 16,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepToStayStraight = 17,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepLeft = 18,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepRight = 19,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepStraight = 20,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Take = 21,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TakeRampLeft = 22,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TakeRampRight = 23,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TakeRampStraight = 24,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepOnrampLeft = 25,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepOnrampRight = 26,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        KeepOnrampStraight = 27,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Merge = 28,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Continue = 29,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RoadNameChange = 30,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        EnterRoundabout = 31,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ExitRoundabout = 32,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnRightThenTurnRight = 33,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnRightThenTurnLeft = 34,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnRightThenBearRight = 35,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnRightThenBearLeft = 36,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnLeftThenTurnLeft = 37,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnLeftThenTurnRight = 38,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnLeftThenBearLeft = 39,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnLeftThenBearRight = 40,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearRightThenTurnRight = 41,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearRightThenTurnLeft = 42,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearRightThenBearRight = 43,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearRightThenBearLeft = 44,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearLeftThenTurnLeft = 45,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearLeftThenTurnRight = 46,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearLeftThenBearRight = 47,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearLeftThenBearLeft = 48,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RampThenHighwayRight = 49,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RampThenHighwayLeft = 50,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RampToHighwayStraight = 51,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        EnterThenExitRoundabout = 52,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearThenMerge = 53,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TurnThenMerge = 54,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BearThenKeep = 55,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Transfer = 56,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Wait = 57,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TakeTransit = 58,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Walk = 59,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryItemWarning", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public partial class ItineraryItemWarning : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Carpool.Bing.Route.ItineraryWarningSeverity SeverityField;
        
        private string TextField;
        
        private Carpool.Bing.Route.ItineraryWarningType WarningTypeField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ItineraryWarningSeverity Severity {
            get {
                return this.SeverityField;
            }
            set {
                if ((this.SeverityField.Equals(value) != true)) {
                    this.SeverityField = value;
                    this.RaisePropertyChanged("Severity");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Text {
            get {
                return this.TextField;
            }
            set {
                if ((object.ReferenceEquals(this.TextField, value) != true)) {
                    this.TextField = value;
                    this.RaisePropertyChanged("Text");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Carpool.Bing.Route.ItineraryWarningType WarningType {
            get {
                return this.WarningTypeField;
            }
            set {
                if ((this.WarningTypeField.Equals(value) != true)) {
                    this.WarningTypeField = value;
                    this.RaisePropertyChanged("WarningType");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryItemHintType", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum ItineraryItemHintType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        PreviousIntersection = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NextIntersection = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Landmark = 2,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryWarningSeverity", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum ItineraryWarningSeverity : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        LowImpact = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Minor = 2,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Moderate = 3,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Serious = 4,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ItineraryWarningType", Namespace="http://dev.virtualearth.net/webservices/v1/route")]
    public enum ItineraryWarningType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Accident = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        AdminDivisionChange = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BlockedRoad = 2,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        CheckTimetable = 3,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Congestion = 4,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        CountryChange = 5,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        DisabledVehicle = 6,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        GateAccess = 7,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        GetOffTransit = 8,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        GetOnTransit = 9,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        IllegalUTurn = 10,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        MassTransit = 11,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Miscellaneous = 12,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NoIncident = 13,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 14,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Other = 15,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        OtherNews = 16,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        OtherTrafficIncidents = 17,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        PlannedEvent = 18,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        PrivateRoad = 19,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RestrictedTurn = 20,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RoadClosures = 21,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        RoadHazard = 22,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ScheduledConstruction = 23,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        SeasonalClosures = 24,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Tollbooth = 25,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TollRoad = 26,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        TrafficFlow = 27,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        UnpavedRoad = 28,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        UnscheduledConstruction = 29,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Weather = 30,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(Namespace="http://dev.virtualearth.net/webservices/v1/route/contracts", ConfigurationName="Bing.Route.IRouteService")]
    public interface IRouteService {
        
        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRoute", ReplyAction="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRouteResponse")]
        [System.ServiceModel.FaultContractAttribute(typeof(Carpool.Bing.Route.ResponseSummary), Action="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRouteResponseSummaryFault", Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
        System.IAsyncResult BeginCalculateRoute(Carpool.Bing.Route.RouteRequest request, System.AsyncCallback callback, object asyncState);
        
        Carpool.Bing.Route.RouteResponse EndCalculateRoute(System.IAsyncResult result);
        
        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRoutesFromMajorRoads", ReplyAction="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRoutesFromMajorRoadsResponse")]
        [System.ServiceModel.FaultContractAttribute(typeof(Carpool.Bing.Route.ResponseSummary), Action="http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/Calculat" +
            "eRoutesFromMajorRoadsResponseSummaryFault", Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
        System.IAsyncResult BeginCalculateRoutesFromMajorRoads(Carpool.Bing.Route.MajorRoutesRequest request, System.AsyncCallback callback, object asyncState);
        
        Carpool.Bing.Route.MajorRoutesResponse EndCalculateRoutesFromMajorRoads(System.IAsyncResult result);
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IRouteServiceChannel : Carpool.Bing.Route.IRouteService, System.ServiceModel.IClientChannel {
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class CalculateRouteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        public CalculateRouteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        public Carpool.Bing.Route.RouteResponse Result {
            get {
                base.RaiseExceptionIfNecessary();
                return ((Carpool.Bing.Route.RouteResponse)(this.results[0]));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class CalculateRoutesFromMajorRoadsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        public CalculateRoutesFromMajorRoadsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        public Carpool.Bing.Route.MajorRoutesResponse Result {
            get {
                base.RaiseExceptionIfNecessary();
                return ((Carpool.Bing.Route.MajorRoutesResponse)(this.results[0]));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class RouteServiceClient : System.ServiceModel.ClientBase<Carpool.Bing.Route.IRouteService>, Carpool.Bing.Route.IRouteService {
        
        private BeginOperationDelegate onBeginCalculateRouteDelegate;
        
        private EndOperationDelegate onEndCalculateRouteDelegate;
        
        private System.Threading.SendOrPostCallback onCalculateRouteCompletedDelegate;
        
        private BeginOperationDelegate onBeginCalculateRoutesFromMajorRoadsDelegate;
        
        private EndOperationDelegate onEndCalculateRoutesFromMajorRoadsDelegate;
        
        private System.Threading.SendOrPostCallback onCalculateRoutesFromMajorRoadsCompletedDelegate;
        
        private BeginOperationDelegate onBeginOpenDelegate;
        
        private EndOperationDelegate onEndOpenDelegate;
        
        private System.Threading.SendOrPostCallback onOpenCompletedDelegate;
        
        private BeginOperationDelegate onBeginCloseDelegate;
        
        private EndOperationDelegate onEndCloseDelegate;
        
        private System.Threading.SendOrPostCallback onCloseCompletedDelegate;
        
        public RouteServiceClient() {
        }
        
        public RouteServiceClient(string endpointConfigurationName) : 
                base(endpointConfigurationName) {
        }
        
        public RouteServiceClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public RouteServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public RouteServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress) {
        }
        
        public System.Net.CookieContainer CookieContainer {
            get {
                System.ServiceModel.Channels.IHttpCookieContainerManager httpCookieContainerManager = this.InnerChannel.GetProperty<System.ServiceModel.Channels.IHttpCookieContainerManager>();
                if ((httpCookieContainerManager != null)) {
                    return httpCookieContainerManager.CookieContainer;
                }
                else {
                    return null;
                }
            }
            set {
                System.ServiceModel.Channels.IHttpCookieContainerManager httpCookieContainerManager = this.InnerChannel.GetProperty<System.ServiceModel.Channels.IHttpCookieContainerManager>();
                if ((httpCookieContainerManager != null)) {
                    httpCookieContainerManager.CookieContainer = value;
                }
                else {
                    throw new System.InvalidOperationException("Unable to set the CookieContainer. Please make sure the binding contains an HttpC" +
                            "ookieContainerBindingElement.");
                }
            }
        }
        
        public event System.EventHandler<CalculateRouteCompletedEventArgs> CalculateRouteCompleted;
        
        public event System.EventHandler<CalculateRoutesFromMajorRoadsCompletedEventArgs> CalculateRoutesFromMajorRoadsCompleted;
        
        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> OpenCompleted;
        
        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> CloseCompleted;
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        System.IAsyncResult Carpool.Bing.Route.IRouteService.BeginCalculateRoute(Carpool.Bing.Route.RouteRequest request, System.AsyncCallback callback, object asyncState) {
            return base.Channel.BeginCalculateRoute(request, callback, asyncState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        Carpool.Bing.Route.RouteResponse Carpool.Bing.Route.IRouteService.EndCalculateRoute(System.IAsyncResult result) {
            return base.Channel.EndCalculateRoute(result);
        }
        
        private System.IAsyncResult OnBeginCalculateRoute(object[] inValues, System.AsyncCallback callback, object asyncState) {
            Carpool.Bing.Route.RouteRequest request = ((Carpool.Bing.Route.RouteRequest)(inValues[0]));
            return ((Carpool.Bing.Route.IRouteService)(this)).BeginCalculateRoute(request, callback, asyncState);
        }
        
        private object[] OnEndCalculateRoute(System.IAsyncResult result) {
            Carpool.Bing.Route.RouteResponse retVal = ((Carpool.Bing.Route.IRouteService)(this)).EndCalculateRoute(result);
            return new object[] {
                    retVal};
        }
        
        private void OnCalculateRouteCompleted(object state) {
            if ((this.CalculateRouteCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.CalculateRouteCompleted(this, new CalculateRouteCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void CalculateRouteAsync(Carpool.Bing.Route.RouteRequest request) {
            this.CalculateRouteAsync(request, null);
        }
        
        public void CalculateRouteAsync(Carpool.Bing.Route.RouteRequest request, object userState) {
            if ((this.onBeginCalculateRouteDelegate == null)) {
                this.onBeginCalculateRouteDelegate = new BeginOperationDelegate(this.OnBeginCalculateRoute);
            }
            if ((this.onEndCalculateRouteDelegate == null)) {
                this.onEndCalculateRouteDelegate = new EndOperationDelegate(this.OnEndCalculateRoute);
            }
            if ((this.onCalculateRouteCompletedDelegate == null)) {
                this.onCalculateRouteCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCalculateRouteCompleted);
            }
            base.InvokeAsync(this.onBeginCalculateRouteDelegate, new object[] {
                        request}, this.onEndCalculateRouteDelegate, this.onCalculateRouteCompletedDelegate, userState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        System.IAsyncResult Carpool.Bing.Route.IRouteService.BeginCalculateRoutesFromMajorRoads(Carpool.Bing.Route.MajorRoutesRequest request, System.AsyncCallback callback, object asyncState) {
            return base.Channel.BeginCalculateRoutesFromMajorRoads(request, callback, asyncState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        Carpool.Bing.Route.MajorRoutesResponse Carpool.Bing.Route.IRouteService.EndCalculateRoutesFromMajorRoads(System.IAsyncResult result) {
            return base.Channel.EndCalculateRoutesFromMajorRoads(result);
        }
        
        private System.IAsyncResult OnBeginCalculateRoutesFromMajorRoads(object[] inValues, System.AsyncCallback callback, object asyncState) {
            Carpool.Bing.Route.MajorRoutesRequest request = ((Carpool.Bing.Route.MajorRoutesRequest)(inValues[0]));
            return ((Carpool.Bing.Route.IRouteService)(this)).BeginCalculateRoutesFromMajorRoads(request, callback, asyncState);
        }
        
        private object[] OnEndCalculateRoutesFromMajorRoads(System.IAsyncResult result) {
            Carpool.Bing.Route.MajorRoutesResponse retVal = ((Carpool.Bing.Route.IRouteService)(this)).EndCalculateRoutesFromMajorRoads(result);
            return new object[] {
                    retVal};
        }
        
        private void OnCalculateRoutesFromMajorRoadsCompleted(object state) {
            if ((this.CalculateRoutesFromMajorRoadsCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.CalculateRoutesFromMajorRoadsCompleted(this, new CalculateRoutesFromMajorRoadsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void CalculateRoutesFromMajorRoadsAsync(Carpool.Bing.Route.MajorRoutesRequest request) {
            this.CalculateRoutesFromMajorRoadsAsync(request, null);
        }
        
        public void CalculateRoutesFromMajorRoadsAsync(Carpool.Bing.Route.MajorRoutesRequest request, object userState) {
            if ((this.onBeginCalculateRoutesFromMajorRoadsDelegate == null)) {
                this.onBeginCalculateRoutesFromMajorRoadsDelegate = new BeginOperationDelegate(this.OnBeginCalculateRoutesFromMajorRoads);
            }
            if ((this.onEndCalculateRoutesFromMajorRoadsDelegate == null)) {
                this.onEndCalculateRoutesFromMajorRoadsDelegate = new EndOperationDelegate(this.OnEndCalculateRoutesFromMajorRoads);
            }
            if ((this.onCalculateRoutesFromMajorRoadsCompletedDelegate == null)) {
                this.onCalculateRoutesFromMajorRoadsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCalculateRoutesFromMajorRoadsCompleted);
            }
            base.InvokeAsync(this.onBeginCalculateRoutesFromMajorRoadsDelegate, new object[] {
                        request}, this.onEndCalculateRoutesFromMajorRoadsDelegate, this.onCalculateRoutesFromMajorRoadsCompletedDelegate, userState);
        }
        
        private System.IAsyncResult OnBeginOpen(object[] inValues, System.AsyncCallback callback, object asyncState) {
            return ((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(callback, asyncState);
        }
        
        private object[] OnEndOpen(System.IAsyncResult result) {
            ((System.ServiceModel.ICommunicationObject)(this)).EndOpen(result);
            return null;
        }
        
        private void OnOpenCompleted(object state) {
            if ((this.OpenCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.OpenCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void OpenAsync() {
            this.OpenAsync(null);
        }
        
        public void OpenAsync(object userState) {
            if ((this.onBeginOpenDelegate == null)) {
                this.onBeginOpenDelegate = new BeginOperationDelegate(this.OnBeginOpen);
            }
            if ((this.onEndOpenDelegate == null)) {
                this.onEndOpenDelegate = new EndOperationDelegate(this.OnEndOpen);
            }
            if ((this.onOpenCompletedDelegate == null)) {
                this.onOpenCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnOpenCompleted);
            }
            base.InvokeAsync(this.onBeginOpenDelegate, null, this.onEndOpenDelegate, this.onOpenCompletedDelegate, userState);
        }
        
        private System.IAsyncResult OnBeginClose(object[] inValues, System.AsyncCallback callback, object asyncState) {
            return ((System.ServiceModel.ICommunicationObject)(this)).BeginClose(callback, asyncState);
        }
        
        private object[] OnEndClose(System.IAsyncResult result) {
            ((System.ServiceModel.ICommunicationObject)(this)).EndClose(result);
            return null;
        }
        
        private void OnCloseCompleted(object state) {
            if ((this.CloseCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.CloseCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void CloseAsync() {
            this.CloseAsync(null);
        }
        
        public void CloseAsync(object userState) {
            if ((this.onBeginCloseDelegate == null)) {
                this.onBeginCloseDelegate = new BeginOperationDelegate(this.OnBeginClose);
            }
            if ((this.onEndCloseDelegate == null)) {
                this.onEndCloseDelegate = new EndOperationDelegate(this.OnEndClose);
            }
            if ((this.onCloseCompletedDelegate == null)) {
                this.onCloseCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCloseCompleted);
            }
            base.InvokeAsync(this.onBeginCloseDelegate, null, this.onEndCloseDelegate, this.onCloseCompletedDelegate, userState);
        }
        
        protected override Carpool.Bing.Route.IRouteService CreateChannel() {
            return new RouteServiceClientChannel(this);
        }
        
        private class RouteServiceClientChannel : ChannelBase<Carpool.Bing.Route.IRouteService>, Carpool.Bing.Route.IRouteService {
            
            public RouteServiceClientChannel(System.ServiceModel.ClientBase<Carpool.Bing.Route.IRouteService> client) : 
                    base(client) {
            }
            
            public System.IAsyncResult BeginCalculateRoute(Carpool.Bing.Route.RouteRequest request, System.AsyncCallback callback, object asyncState) {
                object[] _args = new object[1];
                _args[0] = request;
                System.IAsyncResult _result = base.BeginInvoke("CalculateRoute", _args, callback, asyncState);
                return _result;
            }
            
            public Carpool.Bing.Route.RouteResponse EndCalculateRoute(System.IAsyncResult result) {
                object[] _args = new object[0];
                Carpool.Bing.Route.RouteResponse _result = ((Carpool.Bing.Route.RouteResponse)(base.EndInvoke("CalculateRoute", _args, result)));
                return _result;
            }
            
            public System.IAsyncResult BeginCalculateRoutesFromMajorRoads(Carpool.Bing.Route.MajorRoutesRequest request, System.AsyncCallback callback, object asyncState) {
                object[] _args = new object[1];
                _args[0] = request;
                System.IAsyncResult _result = base.BeginInvoke("CalculateRoutesFromMajorRoads", _args, callback, asyncState);
                return _result;
            }
            
            public Carpool.Bing.Route.MajorRoutesResponse EndCalculateRoutesFromMajorRoads(System.IAsyncResult result) {
                object[] _args = new object[0];
                Carpool.Bing.Route.MajorRoutesResponse _result = ((Carpool.Bing.Route.MajorRoutesResponse)(base.EndInvoke("CalculateRoutesFromMajorRoads", _args, result)));
                return _result;
            }
        }
    }
}
